package independence.reflection
{
	import independence.core.IndyObject;
	/**
	 * The Interface class represents an interface being implemented by a class.
	 * It defines methods for introspection into the interface's declared methods.
	 * 
	 * @author	TK, TK Assembled for Independence Glory.
	 */
	public final class Interface extends IndyObject
	{
		/**
		 * @protected The interface's class object.
		 */
		protected var  clazz:Class;
		/**
		 * @protected An array of all of the interface's defined methods.
		 */
		protected var methods:Vector.<Method>;
		/**
		 * Constructs a new Interface object.
		 * @param	clazz	The Class object for this interface.
		 * @param	methods	An array of all of the interface's defined Method objects.
		 */
		public function Interface(clazz:Class, methods:Vector.<Method>)
		{
			this.clazz = clazz;
			this.methods = methods;
		}
		/**
		 * Returns the Class object representing the interface.
		 * @return	Returns the Class object that represents the interface.
		 */
		public function getInterfaceClass():Class
		{
			return clazz;
		}
		/**
		 * Returns an array of all of the methods defined by this interface.
		 * @return	Returns a <code>Vector</code> of type <code>Method</code> having all methods defined by this interface.
		 */
		public function getMethods():Vector.<Method>
		{
			return methods;
		}
	}
}